package com.rjj.wlqq.wx.entity.template.ticket;

import cn.hutool.core.lang.Assert;
import com.rjj.wlqq.wx.common.constant.TicketType;

/**
 * @author r
 * @date 2020/12/27 13:00
 * 请求实体封装
 * <p>
 * http请求方式: POST URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
 * POST数据格式：json POST数据例子：
 * {"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
 * 或者也可以使用以下POST数据创建字符串形式的二维码参数：
 * {"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}
 * <p>
 * 永久二维码请求说明
 * <p>
 * http请求方式: POST URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
 * POST数据格式：json POST数据例子：
 * {"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}
 * 或者也可以使用以下POST数据创建字符串形式的二维码参数：
 * {"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}
 * <p>
 * <p>
 * <p>
 * <p>
 * 参数	说明
 * expire_seconds	该二维码有效时间，以秒为单位。 最大不超过2592000（即30天），此字段如果不填，则默认有效期为30秒。
 * action_name	二维码类型，QR_SCENE为临时的整型参数值，QR_STR_SCENE为临时的字符串参数值，QR_LIMIT_SCENE为永久的整型参数值，QR_LIMIT_STR_SCENE为永久的字符串参数值
 * action_info	二维码详细信息
 * scene_id	场景值ID，临时二维码时为32位非0整型，永久二维码时最大值为100000（目前参数只支持1--100000）
 * scene_str	场景值ID（字符串形式的ID），字符串类型，长度限制为1到64
 */
public class TicketRequest
{

    public static String getSceneInt(Long expire_seconds, Long scene_id)
    {
        Assert.notNull(expire_seconds);
        Assert.notNull(scene_id);
        return "{\"expire_seconds\": " + expire_seconds + ", \"action_name\": \"" + TicketType.QR_SCENE.getValue() + "\",action_info\": {\"scene\": {\"scene_id\": " + scene_id + "}}}";

    }

    public static String getSceneStr(Long expire_seconds, String scene_str)
    {
        Assert.notNull(expire_seconds);
        Assert.notNull(scene_str);
        return "{\"expire_seconds\": " + expire_seconds + ", \"action_name\": \"" + TicketType.QR_STR_SCENE.getValue() + "\",action_info\": {\"scene\": {\"scene_str\": \"" + scene_str + "\"}}}";
    }

    public static String getSceneLimitInt(String scene_id)
    {
        Assert.notNull(scene_id);
        return "{\"action_name\": \"" + TicketType.QR_LIMIT_SCENE.getValue() + "\", \"action_info\": {\"scene\": {\"scene_id\": " + scene_id + "}}}";
    }

    public static String getSceneLimitStr(String scene_str)
    {
        Assert.notNull(scene_str);
        return "{\"action_name\": \"" + TicketType.QR_LIMIT_SCENE.getValue() + "\", \"action_info\": {\"scene\": {\"scene_id\": \"" + scene_str + "\"}}}";
    }
}
